Source control systems are used during software development for revision control of source code. Centralized source control systems permit revision control from a central location, typically based on a client/server model. In a centralized source control system, a server computer typically maintains a source code repository. A software developer on a client computer may check out source code from the source code repository and check the source code back in to the source code repository, for example after code changes are made.
Distributed source control systems provide for revision control based on a peer to peer model. In a distributed source control system, a working copy of the source code on each peer node, for example on each client computer, may constitute a source code repository. Distributed source control systems are commonly referred to as decentralized source control systems.
Software development companies typically either use a centralized source control system or a distributed source control system for a project, but not both. Companies typically have a large investment in their centralized source control systems and may find it difficult and expensive to change to a different type of source control system. Many developers like to use a distributed source control system but also may need to check their source code into a company's centralized source control system.